package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.dto.ProcessNodeTaskUpdateDTO;
import com.xbongbong.paas.pojo.vo.ProcessNodeTaskUpdateVO;
import com.xbongbong.paas.toolbox.exception.XbbException;

/**
 * @author: wufeng
 * @date: 2018/8/22 17:06
 * @desrcption: 流程操作
 */
public interface PaasProcessNodeTaskOperateService {

    /**
     * 钉钉版本流程图的提交操作
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO dingCommit(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;

    /**
     * 暂存
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO storage(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;


    /**
     * 转交
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO transfer(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;

    /**
     * 钉钉回退
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO dingBack(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;

    /**
     * 撤回
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO revoke(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;

    /**
     * 结束流程
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO end(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;

    /**
     * 钉钉重新提交
     * @param processNodeTaskUpdateDTO
     * @return
     * @throws XbbException
     */
    ProcessNodeTaskUpdateVO dingAgainCommit(ProcessNodeTaskUpdateDTO processNodeTaskUpdateDTO) throws XbbException;
}
